跳到主要内容

5.4 如何禁用Qt界面启动

  在高版本的内核和高版本的Yocto里,所使用的文件系统早已经使用Systemd方式来用来启动守护进程,已成为大多数发行版的标准配置。如果你学习过Systemd,那么你将很容易理解正点原子所配置的Qt桌面服务启动。

  正点原子STM32MP157出厂文件系统里支持多种Qt显示的方式,出厂系统的Qt桌面设置了可选择linuxfb和eglfs启动。默认开机以Linuxfb方式显示Qt,下面简单介绍一下这两种方式。

   - Linuxfb插件

  Linuxfb插件,使用/dev/fb0设备,纯软件渲染,不使用硬件GPU加速,出厂默认使用此方式,在文件系统路径下/lib/systemd/system/atk-qtapp-start.service这个服务里,我们可以查看它的内容。主要看ExecStart=/usr/local/QDesktop-fb -platform linuxfb此行。配置了路径/opt/QDesktop-fb Qt应用程序使用linuxfb方式显示。

   - Eglfs插件

  对于有GPU的板卡来说,使用eglfs方式显示Qt是比较好的,使用Eglfs插件就使用了硬件渲染。如果你使用此方式显示Qt,可以明显的看到Qt界面的图片拖动时没有锯齿状态。正点原子也配置了此种方式,默认没有此项启动。此方式有个缺点,就是当我们使用触摸屏时,滑动屏幕是非常流畅的。但是如果用户使用此种方式使用了鼠标进行点击,就会觉得卡顿。Qt官方解释eglfs方式使用鼠标会性能不佳。对于正点原子STM32MP157的用户没有购买LCD屏,若使用此方式直接使用HDMI,用鼠标点击,体验感较差,卡顿。所以正点原子默认出厂配置了linuxfb方式显示,可解决鼠标卡顿的问题。如果想用此方式显示Qt则在文件系统路径下/lib/systemd/system/atk-qtapp-start.service这个服务里找到#ExecStart=/usr/local/QDesktop-egl -platform eglfs。取消前面的“#”,将“#”设置到上一行的开头,禁用以linuxfb插件的方式启动。

  如何禁用正点原子Qt桌面启动呢?出厂默认是启动atk-qtapp-start.service这个服务。

  我们若不需要启动Qt桌面。那么我们执行下面的指令。

systemctl disable atk-qtapp-start.service	// 执行此项关闭Qt桌面服务,下次启动不生效
systemctl stop atk-qtapp-start.service // 暂时停止Qt桌面服务,重启服务用restart
systemctl enable atk-qtapp-start.service // 若前面disable了,想再开启,用enable

  上面说的“服务”可以相对初学者来说比较复杂。需要一定的时间去磨合。文件系统的功能远远不止这些,需要个人自己发掘与探究。上面说的是使用方法,具体原理并非这个文档能解释清楚,先照葫芦画瓢做一遍再理解,再研究。